package com.lej.ext

import android.content.Context
import android.content.pm.ActivityInfo
import com.lej.engine.GlideEngine
import com.lej.engine.LubanCompressEngine
import com.luck.picture.lib.basic.PictureSelector
import com.luck.picture.lib.config.SelectMimeType
import com.luck.picture.lib.config.SelectModeConfig
import com.luck.picture.lib.entity.LocalMedia
import com.luck.picture.lib.interfaces.OnResultCallbackListener

fun Context.selectSingle() {
    PictureSelector.create(this)
        .openGallery(SelectMimeType.ofImage()) // 全部ofAll()、图片ofImage()、视频ofVideo()、音频ofAudio()
        .setImageEngine(GlideEngine) // 外部传入图片加载引擎，必传项
//        .isWeChatStyle(true) // 是否开启微信图片选择风格
//        .isUseCustomCamera(false) // 是否使用自定义相机
        .setImageSpanCount(3) // 每行显示个数
        .isEmptyResultReturn(true) // 未选择数据时点击按钮是否可以返回
//        .isAndroidQTransform(true)// 是否需要处理Android Q 拷贝至应用沙盒的操作，只针对compress(false); && enableCrop(false);有效,默认处理
        .setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED) // 设置相册Activity方向，不设置默认使用系统
        .isOriginalControl(false) // 是否显示原图控制按钮，如果设置为true则用户可以自由选择是否使用原图，压缩、裁剪功能将会失效
        .setSelectionMode(SelectModeConfig.SINGLE) // 多选 or 单选
        .isDirectReturnSingle(true) // 单选模式下是否直接返回，PictureConfig.SINGLE模式下有效
        .isPreviewImage(true) // 是否可预览图片
//        .isCamera(true) // 是否显示拍照按钮
        .isCameraAroundState(true)//设置为前置摄像头
        .isSelectZoomAnim(true) // 图片列表点击 缩放效果 默认true
        .setCompressEngine(LubanCompressEngine.create())

//        .enableCrop(true) // 是否裁剪
//        .setPictureCropStyle(cropStyle)
//        .synOrAsy(true) //同步true或异步false 压缩 默认同步
//        .withAspectRatio(1, 1)// 裁剪比例
//        .hideBottomControls(true) // 是否显示uCrop工具栏，默认不显示
//        .freeStyleCropEnabled(false) // 裁剪框是否可拖拽
//        .circleDimmedLayer(false) // 是否圆形裁剪
//        .showCropFrame(true) // 是否显示裁剪矩形边框 圆形裁剪时建议设为false
//        .showCropGrid(false) // 是否显示裁剪矩形网格 圆形裁剪时建议设为false
//        .cutOutQuality(100) // 裁剪输出质量 默认100
//        .minimumCompressSize(1000) // 小于1mb的图片不压缩
        .forResult(object : OnResultCallbackListener<LocalMedia?> {
            override fun onResult(result: ArrayList<LocalMedia?>?) {
                result?.takeUnless { result.isEmpty() }?.first()?.let {
                }
            }

            override fun onCancel() {
            }
        })
}
